#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2022  Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="@prefix@"
exec_prefix="@exec_prefix@"
datarootdir="@datarootdir@"

export TEXTDOMAIN=@PACKAGE@
export TEXTDOMAINDIR="@localedir@"

. "$pkgdatadir/grub-mkconfig_lib"

CRYPTTAB=/etc/crypttab

if [ -r "$CRYPTTAB" ]; then
  awk '
      /^\s*#/ || $3 ~ /(^\/dev\/|^\/proc\/|^\/sys\/|:)/ { next }
      { key[0] = $3 }
      $3 ~ /(^$|none|-)/ {
        key[0] = "/etc/cryptsetup-keys.d/" $1 ".key"
        key[1] = "/run/cryptsetup-keys.d/" $1 ".key"
      }
      {
        for (d in key)
          if (system("test -f " key[d]) == 0)
            next
      }
      /UUID=/ {
          sub(/UUID=/,"",$2);
          gsub(/-/,"",$2);
          printf("crypttab_entry %s %s %s\n",$1,$2,$3)
      }
  ' "$CRYPTTAB"
fi
